home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / SAT 2.3.8 / Demos / StepPlatform Demo ƒ / VBLSync.c < prev   
Text File  |  1996-05-11  |  1KB  |  58 lines

  1. /* This unit isn't CodeWarrior-compatible yet. It is a bit hard to make it so. */
  2. /* CodeWarrior users can always use MySlotVBL. After all, mixing languages isn't */
  3. /* hard as it used to be.  /Ingemar */
  4.  
  5.  
  6. #include <Retrace.h>
  7. #include <Start.h>
  8.  
  9. Boolean InstallVBLCounter(void);
  10. Boolean RemoveVBLCounter(void);
  11. pascal int VBLCounterProc(void);
  12.  
  13. typedef struct {
  14.     VBLTask            task;
  15.     short                videoslot;
  16.     long                count;
  17. } VBLCounterRec;
  18.  
  19. VBLCounterRec VBLCounter;
  20.  
  21. /************************************************************/
  22.  
  23. Boolean InstallVBLCounter(void)
  24. {
  25.     DefVideoRec            VBLVideoDefault;
  26.  
  27.     VBLCounter.task.vblAddr = VBLCounterProc;
  28.     VBLCounter.task.qType = vType;
  29.     VBLCounter.task.vblCount = 1;
  30.     VBLCounter.task.vblPhase = 0;
  31.     
  32.     GetVideoDefault(&VBLVideoDefault);
  33.     VBLCounter.videoslot = VBLVideoDefault.sdSlot;
  34.  
  35.     VBLCounter.count = 0;
  36.     
  37.     return (SlotVInstall((QElemPtr)&VBLCounter.task, VBLCounter.videoslot)== noErr);
  38. }
  39.  
  40. /************************************************************/
  41.  
  42. Boolean RemoveVBLCounter(void)
  43. {
  44.     return (SlotVRemove((QElemPtr)&VBLCounter.task, VBLCounter.videoslot) ==noErr);
  45. }
  46.  
  47. /************************************************************/
  48.  
  49. pascal int VBLCounterProc(void)
  50. {
  51.     asm {    
  52.         MOVE.W    #1, OFFSET(VBLCounterRec, task.vblCount) (A0)
  53.         ADDQ.L    #1, OFFSET(VBLCounterRec, count) (A0)
  54.     }
  55.     
  56.     return(true);
  57. }
  58.